/**
 * 用户模块Store
 */
import { defineStore } from "pinia";
import { saveUserInfo } from "@/utils/storageUtil";

import * as KKLoginApi from "@/api/login";

// 创建Store
export const useUserStore = defineStore(
  "user",
  () => {
    // 获取用户信息
    const requestUserInfo = async () => {
      const data = (await KKLoginApi.getInfo().catch(() => {
        return false;
      })) as any;
      if (data && data.data) {
        const userInfo = {
          adminUserId: data.data.adminUserId,
          departmentFullName: data.data.departmentFullName,
          departmentList: data.data.departmentList,
          isSuperAdmin: data.data.isSuperAdmin,
          jobName: data.data.jobName,
          lastLoginTime: data.data.lastLoginTime,
          mobileCount: data.data.mobileCount,
          trueName: data.data.trueName,
        } as any;
        saveUserInfo(userInfo);
        return true;
      } else {
        return false;
      }
    };

    return {
      requestUserInfo,
    };
  },
  {
    // 重要：模块必须开启持久化，才会持久化！！！
    // 注意：默认持久化，只在H5端有效，因为默认使用的是localStorage，小程序端不能使用这个API，所以需要重写存取方法，转调给UniApp的持久化方法
    // persist: true,
    persist: {
      // 默认值，就是使用localStorage
      // storage: localStorage
      // 重写存取方法，转调给UniApp
      storage: {
        getItem(key) {
          return uni.getStorageSync(key);
        },
        setItem(key, val) {
          uni.setStorageSync(key, val);
        },
      },
    },
  }
);
